package com.thinkgem.jeesite.common.pojo.net;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import com.thinkgem.jeesite.common.pojo.runtime.StringUtils;


public class NetUtils {

	public static String getRemortIP(HttpServletRequest request) {
		if (request.getHeader("x-forwarded-for") == null) {
			return request.getRemoteAddr();
		}
		return request.getHeader("x-forwarded-for");
	}

	public static String getIpAddr(HttpServletRequest request)  {   
	      String ip  =  request.getHeader( " x-forwarded-for " );   
	       if (ip  ==   null   ||  ip.length()  ==   0   ||   " unknown " .equalsIgnoreCase(ip))  {   
	          ip  =  request.getHeader( " Proxy-Client-IP " );   
	      }    
	       if (ip  ==   null   ||  ip.length()  ==   0   ||   " unknown " .equalsIgnoreCase(ip))  {   
	          ip  =  request.getHeader( " WL-Proxy-Client-IP " );   
	      }    
	       if (ip  ==   null   ||  ip.length()  ==   0   ||   " unknown " .equalsIgnoreCase(ip))  {   
	         ip  =  request.getRemoteAddr();   
	     }    
	      return  ip;   
	 }  

	/**
	 * 获得用户远程地址
	 */
	public static String getRemoteAddr(HttpServletRequest request){
		String remoteAddr = request.getHeader("X-Real-IP");
        if (StringUtils.isNotBlank(remoteAddr)) {
        	remoteAddr = request.getHeader("X-Forwarded-For");
        }else if (StringUtils.isNotBlank(remoteAddr)) {
        	remoteAddr = request.getHeader("Proxy-Client-IP");
        }else if (StringUtils.isNotBlank(remoteAddr)) {
        	remoteAddr = request.getHeader("WL-Proxy-Client-IP");
        }
        return remoteAddr != null ? remoteAddr : request.getRemoteAddr();
	}

	public static HttpSession getHttpSession(HttpServletRequest request) {
		return request.getSession();
	}

	public static String getSessionId(HttpServletRequest request) {
		return getHttpSession(request).getId();
	}

	public static void requestInfo(HttpServletRequest request) {
		System.out.println("Protocol: " + request.getProtocol()); 
		System.out.println("Scheme: " + request.getScheme()); 
		System.out.println("Server Name: " + request.getServerName() ); //获得服务器的名字 
		System.out.println("Server Port: " + request.getServerPort()); //获得服务器的端口号
		System.out.println("rotocol: " + request.getProtocol());
		//System.out.println("Server Info: " + request.getServletContext().getServerInfo()); 
		//System.out.println("Server Info: " + getServletconfig().getServletContext().getServerInfo());
		System.out.println("Remote Addr: " + request.getRemoteAddr()); //获得客户端的ip地址 
		System.out.println("Remote Host: " + request.getRemoteHost()); //获得客户端电脑的名字，若失败，则返回客户端电脑的ip地址
		System.out.println("Character Encoding: " + request.getCharacterEncoding()); 
		System.out.println("Content Length: " + request.getContentLength()); 
		System.out.println("Content Type: "+ request.getContentType()); 
		System.out.println("Auth Type: " + request.getAuthType()); 
		System.out.println("HTTP Method: " + request.getMethod()); //获得客户端向服务器端传送数据的方法有get、post、put等类型
		System.out.println("ath Info: " + request.getPathInfo()); 
		System.out.println("ath Trans: " + request.getPathTranslated()); 
		System.out.println("Query String: " + request.getQueryString()); 
		System.out.println("Remote User: " + request.getRemoteUser()); 
		System.out.println("Session Id: " + request.getRequestedSessionId()); 
		System.out.println("Request URI: " + request.getRequestURI());//获得发出请求字符串的客户端地址  
		System.out.println("Servlet Path: " + request.getServletPath()); //获得客户端所请求的脚本文件的文件路径 
		System.out.println("Header Names: " + request.getHeaderNames()); //返回所有request header的名字，结果集是一个enumeration（枚举）类的实例
		System.out.println("Accept: " + request.getHeader("Accept")); 
		System.out.println("Host: " + request.getHeader("Host")); 
		System.out.println("Referer : " + request.getHeader("Referer")); 
		System.out.println("Accept-Language : " + request.getHeader("Accept-Language")); 
		System.out.println("Accept-Encoding : " + request.getHeader("Accept-Encoding")); 
		System.out.println("User-Agent : " + request.getHeader("User-Agent")); //返回客户端浏览器的版本号、类型 
		System.out.println("Connection : " + request.getHeader("Connection")); 
		System.out.println("Cookie : " + request.getHeader("Cookie")); 
		System.out.println("Created : " + request.getSession().getCreationTime()); 
		System.out.println("LastAccessed : " + request.getSession().getLastAccessedTime());
	}

}